package com.lekang.service;

import java.util.Date;
import java.util.List;
import com.lekang.domain.TaskArrangement;

/**
 * 任务安排Service接口
 * 
 * @author ruoyi
 * @date 2025-10-16
 */
public interface ITaskArrangementService 
{
    /**
     * 查询任务安排
     * 
     * @param id 任务安排主键
     * @return 任务安排
     */
    public TaskArrangement selectTaskArrangementById(Long id);

    /**
     * 查询任务安排列表
     * 
     * @param taskArrangement 任务安排
     * @return 任务安排集合
     */
    public List<TaskArrangement> selectTaskArrangementList(TaskArrangement taskArrangement);

    /**
     * 新增任务安排
     * 
     * @param taskArrangement 任务安排
     * @return 结果
     */
    public int insertTaskArrangement(TaskArrangement taskArrangement);

    /**
     * 修改任务安排
     * 
     * @param taskArrangement 任务安排
     * @return 结果
     */
    public int updateTaskArrangement(TaskArrangement taskArrangement);

    /**
     * 批量删除任务安排
     * 
     * @param ids 需要删除的任务安排主键集合
     * @return 结果
     */
    public int deleteTaskArrangementByIds(Long[] ids);

    /**
     * 删除任务安排信息
     * 
     * @param id 任务安排主键
     * @return 结果
     */
    public int deleteTaskArrangementById(Long id);


    /**
     * 取消任务
     * @param taskId 任务ID
     * @param cancelReason 取消原因
     * @return 影响行数
     */
    int cancelTask(Long taskId, String cancelReason);

    /**
     * 执行任务
     * @param taskId 任务ID
     * @param executionTime 执行时间
     * @param executionImage 执行图片（路径）
     * @param executionRecord 执行记录
     * @return 影响行数
     */
    int executeTask(Long taskId, Date executionTime, String executionImage, String executionRecord);

    /**
     * 改期任务
     * @param taskId 任务ID
     * @param newExpectedTime 新的期望服务时间
     * @param rescheduleTime 改期操作时间
     * @return 影响行数
     */
    int rescheduleTask(Long taskId, Date newExpectedTime, Date rescheduleTime);

    /**
     * 根据关联单据号查询任务安排
     * 
     * @param relatedOrderNo 关联单据号
     * @return 任务安排
     */
    public TaskArrangement selectTaskArrangementByRelatedOrderNo(String relatedOrderNo);

}
